public class Demotion {
    void f1(double x) {
        System.out.println("Inside f1(double)");
    }

    void f2(float x) {
        System.out.println("Inside f2(float)");
    }

    void f3(long x) {
        System.out.println("Inside f3(long)");
    }

    void f4(int x) {
        System.out.println("Inside f4(int)");
    }

    void f5(short x) {
        System.out.println("Inside f5(short)");
    }

    void f6(char x) {
        System.out.println("Inside f6(char)");
    }

    void f7(byte x) {
        System.out.println("Inside f7(byte)");
    }

    void testDemotion() {
        double x = 100.0;
        f1(100);
        f2((float) x);
        f3((long) x);
        f4((int) x);
        f5((short) x);
        f6((char) x);
        f7((byte) x);
    }

    public static void main(String[] args) {
        Demotion d = new Demotion();
        d.testDemotion();
    }
}

/*
 在 Java 中，double 类型比 long 更宽。
long 是 64 位的整数类型，可以表示从 -2^63 到 2^63 - 1 的整数值。
double 是 64 位的浮点数类型，可以表示更大范围的数值（包括小数），其范围大约是 ±5.0 × 10^-324 到 ±1.7 × 10^308。
*/